<?php  

require_once("controller/Controller.class.php");
require_once("classes/Usuario.class.php");
require_once("view/UsuarioView.class.php");
require_once("model/UsuarioModel.class.php");
require_once("classes/funcoes.php");

class UsuarioController extends Controller{
    
    private $view;
    private $model;
    
    public function __construct(){
        $this->view = new UsuarioView();
        $this->model = new UsuarioModel();
    }
    
    public function listaUsuario(){
        $dados = $this->model->listarTodos();
        $this->view->atribuirValor("usuario", $dados["usuario"]);
        $this->view->atribuirValor("perfil", $dados["perfil"]);
        $this->view->atribuirValor("data_cadastro", $dados["data_cadastro"]);
        $this->view->atribuirValor("idusuario", $dados["idusuario"]);
        $this->view->listaUsuario();
    }
    
    public function addUsuario(){
        if(!$_SESSION){
            session_start();    
        }
        if($_POST['nome']){
            if($_SESSION['usuario_perfil']=='adm'){
                $usuario = new Usuario();
                $usuario->setNome($_POST['nome']);
                $usuario->setPerfil($_POST['perfil']);
                $usuario->setSenha($this->codificaSenha($_POST['senha'],'sha1'));    
                $usuario->setLogin($_POST['login']);
                $this->model->inserir($usuario);    
                $this->log("Cadastrou o usuário ");
                $this->listaUsuario();   
            }
            else{
                $this->alerta("Você não possui permissão pra incluir novos usuários.");
                $this->redirect("usuario.php");
                exit;
            }
        }
        else{
            if($_SESSION['usuario_perfil']=='adm'){
                $this->view->addUsuario();    
            }
            else{
                $this->alerta("Você não possui permissão pra incluir novos usuários.");
                $this->redirect("usuario.php");
                exit;     
            }
        }
    }
    
    public function editUsuario($idusuario){
        if($_POST['nome']){
            if($_SESSION['usuario']==$_POST['login'] || $_SESSION['usuario_perfil']=='adm'){
                $usuario = new Usuario();
                $usuario->setNome($_POST['nome']);
                if($_SESSION['usuario_perfil']=='adm'){
                    $usuario->setPerfil($_POST['perfil']);    
                }
                $usuario->setLogin($_POST['login']);
                $usuario->setCodigo($_POST['idusuario']);
                $this->model->alterar($usuario);  
                $_SESSION['usuario'] = $usuario->getLogin();
                $_SESSION['usuario_perfil'] = $usuario->getPerfil();
                $this->log("Alterou o usuário ".$_POST['login']);
                $this->redirect("usuario.php");      
            }
            else{
                $this->alerta("Você não possui permissão pra alterar outros usuários.");
                $this->redirect("usuario.php");
                exit;
            }
        }
        else{
            $usuario = new Usuario();
            $usuario->setCodigo($idusuario);
            $dados = $this->model->listar($usuario);
            $usuario->setNome($dados['nome']);
            $usuario->setLogin($dados['usuario']);
            $usuario->setDataCadastro($dados['data_cadastro']);
            $usuario->setPerfil($dados['perfil']);
            $this->view->atribuirValor("nome_usu", $dados['nome']);
            $this->view->atribuirValor("login", $dados['usuario']);
            $this->view->atribuirValor("data_cadastro", $dados['data_cadastro']);
            $this->view->atribuirValor("perfil", $dados['perfil']);
            $this->view->atribuirValor("idusuario", $dados['idusuario']);
            $this->view->editUsuario();
        }
    }
    
    public function delUsuario($idusuario){
        if($_SESSION['usuario_perfil']=='adm'){
            if($_SESSION['usuario']!=$_POST['login']){
                $usuario = new Usuario();
                $usuario->setCodigo($idusuario);
                $usuario->setLogin($_POST['login']);
                $this->model->deletar($usuario);
                $this->log("Deletou o usuario ".$_POST['login']);
                $this->alerta("Usuário {$usuario->getLogin()} foi excluído.");
                $this->redirect("usuario.php");
                exit;           
            }
            else{
                $this->alerta("Você não pode se auto deletar.");
                $this->redirect("usuario.php");
                exit;    
            }
        }
        else{
            $this->alerta("Você não possui permissão pra deletar outros usuários.");
            $this->redirect("usuario.php");
            exit;
        }
    }
    
}
?>